package com.kaifamiao.www.demo.do0827;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {
    public static void main(String[] args) throws IOException {
        String folderPath = "E:\\myfloder\\io";
        String fileName = "text.txt";
        creatFolder (folderPath);
        System.out.println("创建目录完毕");
        creatFile(folderPath,fileName);
        System.out.println("创建文件完成");
        listFile("E://myfloder");
        System.out.println("显示E盘中的目录和文件完毕");
        listDisk();
        System.out.println("罗列e盘盘符完毕");
        deleteFile("e:\\myfloder\\io\\lala.txt");
        System.out.println("删除完成");
        fileInfomation("e:\\myfloder\\io","lala.yaya");
        System.out.println("显示文件信息完毕");

    }

    /**
     * 创建目录
     * @param folderPath
     */
    public static void creatFolder(String folderPath){
        File file = new File(folderPath);
        if (!file.exists()){//exists()方法用于判断文件是否存在
            file.mkdirs();//mkdirs()方法用来创建多级目录
        }
    }

    /**
     * 创建文件
     * @param folderPath
     * @param fileName
     * @throws IOException
     */
    public static void creatFile(String folderPath,String fileName) throws IOException {
        File file = new File(folderPath,fileName);
        if (!(file.exists())){
            file.createNewFile();//creatNewFile() 方法用于创建文件
        }
    }

    /**
     * 显示指定目录下的子目录和文件
     * @param diskName
     */
    public static void listFile(String diskName){
        File file = new File(diskName);
        File[] files = file.listFiles();//listFiles()方法获取指定目录中存在的子目录和文件
        if (files != null && files.length>0){
            for (int i = 0;i<files.length;i ++){
                if (files[i].isDirectory()){
                    //isDirectory()
                    System.out.println("目录名："+files[i].getAbsolutePath());
                }
                if (files[i].isFile()){
                    System.out.println("这是文件："+files[i].getName());
                }
            }
        }
    }

    /**
     * 删除文件
     * @param fileName
     */
    public static void  deleteFile(String fileName){
        File file = new File(fileName);
        if (!file.exists()){
            System.out.println(fileName+"文件不存在");
            return;
        }
        if (!file.isFile()){//isFile()方法用于判断file是否是文件
            System.out.println(fileName+"不是文件，停止删除");
            return;
        }
        if (file.canExecute()){//canExecute()判断是否有删除权限
            file.delete();
        } else {
            System.out.println("没有删除权限");
        }
    }

    /**
     * 显示文件信息
     * @param path
     * @param fileName
     */
    public static void fileInfomation(String path,String fileName){
        File file = new File(path,fileName);
        //length() 方法获取文件大小
        System.out.println("文件大小=" + file.length() + "byte");
        System.out.println("文件最后修改日期=" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")
                .format(new Date(file.lastModified())));
    }

    /**
     * 显示系统盘符和磁盘空间
     */
    public static void listDisk(){
        //listRoots()静态方法获取所有盘符
        File disks[] = File.listRoots();
        if (disks != null && disks.length > 0){
            for (int i = 0;i < disks.length;i++){
                System.out.println("磁盘;"+disks[i]);
                //getTotalSpace() 返回由此抽象路径名命名的分区的大小。
                System.out.println("\t磁盘大小：" +
                        disks[i].getTotalSpace() / 1000 / 1000 / 1000 +"G");
                //getFreeSpace()  返回此抽象路径名命名的分区中未分配字节数。
                System.out.println("\t磁盘剩余空间：" +
                        disks[i].getFreeSpace() / 1000 / 1000 / 1000 + "G");
            }
        }
    }
}
